public class Test {
    //面试题目：给你两个有序的链表，把这两个有序的链表排成一个有序的链表
    public static Mylinklist.ListNote mergeTwoLists(Mylinklist.ListNote headA,Mylinklist.ListNote headB){
        Mylinklist.ListNote newHead=new Mylinklist.ListNote(-1);
        Mylinklist.ListNote tmp=newHead;
        //遍历连个链表
        while(headA!=null&&headB!=null){
            if(headA.val< headB.val){
                tmp.next=headA;
                headA=headA.next;
                tmp=tmp.next;
            }else {
                tmp.next=headB;
                headB=headB.next;
                tmp=tmp.next;
            }
        }
        if(headA!=null){
            tmp.next=headA;
        }
        if(headB!=null){
            tmp.next=headB;
        }
        return newHead;

    }
    //面试题：判断两个链表的相交节点的值

    //面试题：判断一个链表当中是否有环
    public static boolean hasCycle(Mylinklist.ListNote head){
        Mylinklist.ListNote fast=head;
        Mylinklist.ListNote slow=head;
        while(fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            if(fast==slow){
                return true;
            }
        }
        return false;
    }
    public static void main(String[] args) {
//        Mylinklist mylinklist=new Mylinklist();
//        mylinklist.addFirst(5);
//        mylinklist.addFirst(4);
//        mylinklist.addFirst(3);
//        mylinklist.addFirst(2);
//        mylinklist.addFirst(1);
//        mylinklist.display();
//        System.out.println(mylinklist.size());
//        System.out.println(mylinklist.contanis(45));
//        mylinklist.addFirst(11);
//        mylinklist.display();
//        mylinklist.addLast(67);
//        mylinklist.display();
//        mylinklist.turn();
//        mylinklist.display();
//        Mylinklist.ListNote ret=mylinklist.midLestNode();
//        System.out.println(ret.val);



        //==============================
//        Mylinklist mylinklist=new Mylinklist();
//        mylinklist.addLast(9);
//        mylinklist.addLast(7);
//        mylinklist.addLast(5);
//        mylinklist.addLast(3);
//        mylinklist.addLast(1);
//        mylinklist.display2(mylinklist.partition(5));

        //=============================
        //判断一个链表是不是回文链表
//        Mylinklist mylinklist=new Mylinklist();
//        mylinklist.addLast(1);
//        mylinklist.addLast(2);
//        mylinklist.addLast(3);
//        mylinklist.addLast(2);
//        mylinklist.addLast(1);
//        System.out.println(mylinklist.chkPalindrome());



        //=======================判断有没有环
        Mylinklist mylinklist=new Mylinklist();
        mylinklist.addLast(1);
        mylinklist.addLast(2);
        mylinklist.addLast(3);
        mylinklist.addLast(2);
        mylinklist.addLast(1);
        mylinklist.createCycle();
        System.out.println(hasCycle(mylinklist.head));
        //判断环的入口点
        System.out.println(mylinklist.detectCycle().val);
    }

}
